<- 25
minivec is.vector(minivec)
[1] TRUE
length(minivec)
[1] 1
Gabriel Andrade Ponce
May 6, 2024
Los vectores son objetos que llevan una colección de uno o más datos del mismo tipo. El tipo del vector es igual al tipo de datos que contiene y solo puede contener datos del mismo tipo. Los vectores también tienen un largo, es decir el número de datos que contiene.
En esencia un solo número o carácter es un vector de largo 1
Para generar vectores de mayor tamaño debemos usar la función de c()
o concatenar.
[1] 4
[1] "numeric"
[1] "character"
[1] "character"
[1] "numeric"
Podemos incluso concatenar objetos que contengan vectores de la misma clase
¿Que sucede cuando creamos un vector con dos tipos de datos?
Podemos crear vectores mediante función de secuencia. Cuando es una secuencia sencilla podemos usar el comando :
. Si necesitamos secuencias más específicas o con ciertas características, entonces podemos usar la función seq
. Ésta función tiene varios argumentos, from
es el número de inicio, el to
el número final, length.out
sirve para controlar el largo del vector y mediante by
podemos especificar el intervalo de la secuencia.
[1] 1 2 3 4 5 6 7 8 9 10
[1] 1.000000 1.555556 2.111111 2.666667 3.222222 3.777778 4.333333 4.888889
[9] 5.444444 6.000000
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
[16] 8.5 9.0 9.5 10.0
rep
permite repetir valores un determinado número de veces. El argumento de times
nos permite especificar el número de veces que un valor o un vector se va a repetir. Cuando especificamos each
podemos controlar el número de veces que se repite cada valor dentro del vector.
Los factores son un caso especial de los caracteres y tienen la peculiaridad de que están compuestos por niveles. En otras palabras los factores pueden asumir un número limitado de valores posibles conocidos o niveles.
Por ejemplo, imaginemos un experimento donde se aplica el tratamiento de sombra a unas plantas en crecimiento. En este caso el tratamiento de sombra es un factor y puede tomar “si” cuando tiene sombra o “no” cuando no se aplicó sombra. Para crear un factor usamos la función factor
[1] "character"
[1] "factor"
Es importante especificar los factores porque muchos funciones y análisis estadísticos requieren de usar objetos de tipo factor.
Podemos crear vectores basados en números al azar basados en una distribución. Por ejemplo, la más común es la distribución normal y se crea mediante rnorm
. Ésta función hace parte de una familia de funciones basadas en distribuciones (ver help de rnorm) y básicamente genera números aleatorios basados en una distribución normal.
En los vectores podemos seleccionar valores con []
, el número que pongamos dentro será la posición del valor que seleccionaremos
Podemos seleccionar varios valores utilizando el comando de concatenar
Las operaciones aritméticas y lógicas también funcionan con vectores. Pero en este caso obtenemos un resultado por cada elemento
[1] 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 10.5 11.0 11.5 12.0 12.5 13.0
[16] 13.5 14.0 14.5 15.0
Las matrices son vectores multi-dimensionales y al igual que los vectores solo pueden contener un tipo de datos. Las matrices tienen dos dimensiones “alto” dado por el número de filas y “largo” por el número de columnas.
Podemos crear una matriz a partir de un vector, especificando las dimensiones de columnas por medio de la función matrix
. Los argumentos de nrow
y ncol
ayudan a definir el número de filas y columnas respectivamente.
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
[7,] 7
[8,] 8
[9,] 9
[10,] 10
[11,] 11
[12,] 12
[13,] 13
[14,] 14
[15,] 15
[16,] 16
[17,] 17
[18,] 18
[19,] 19
[20,] 20
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 11 1 11 1 11 1 11 1 11
[2,] 2 12 2 12 2 12 2 12 2 12
[3,] 3 13 3 13 3 13 3 13 3 13
[4,] 4 14 4 14 4 14 4 14 4 14
[5,] 5 15 5 15 5 15 5 15 5 15
[6,] 6 16 6 16 6 16 6 16 6 16
[7,] 7 17 7 17 7 17 7 17 7 17
[8,] 8 18 8 18 8 18 8 18 8 18
[9,] 9 19 9 19 9 19 9 19 9 19
[10,] 10 20 10 20 10 20 10 20 10 20
Warning in matrix(1:20, nrow = 4, ncol = 3): data length [20] is not a
sub-multiple or multiple of the number of columns [3]
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
A veces es más intuitivo unir dos o más vectores previamente existentes, por lo que en estos casos podemos combinarlos por filas rbind
o por columnas cbind
.
[,1] [,2] [,3] [,4]
v1 1 2 3 4
v2 9 10 11 12
v3 13 14 15 16
v1 v2 v3
[1,] 1 9 13
[2,] 2 10 14
[3,] 3 11 15
[4,] 4 12 16
[1] "matrix" "array"
Warning in rbind(v1, v4): number of columns of result is not a multiple of
vector length (arg 1)
Se pueden combinar vectores de distinto tipo, pero el de tipo carácter siempre transformará al numérico. Entonces, cuidado con lo que combinan.
v1 v5
[1,] "1" "1"
[2,] "2" "2"
[3,] "3" "3"
[4,] "4" "4"
chr [1:4, 1:2] "1" "2" "3" "4" "1" "2" "3" "4"
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:2] "v1" "v5"
[1] 4 2
[1] "matrix" "array"
Se pueden usar operadores aritméticos en matrices de tipo numérico.
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
v1 2 3 4 5 2 3 4 5 2
v4 21 22 23 24 25 26 27 28 29
Podemos hacer uso de la función t()
para transponer una matriz
Igual que en los vectores podemos usar[]
para seleccionar valores. La grán diferencia es que como las matrices son de 2 dimensiones, debemos especificar ambas en los paréntesis y separarlos por una coma: [filas , columnas]. Cuando seleccionamos más de una fila o columna podemos usar c
para concatenar el vector de selección. Cuando ponemos un signo de “menos” (-) dentro de los paréntesis de selección, vamos a eliminar dicha columna o fila.
v1 v2 v3
[1,] 1 9 13
[2,] 3 11 15
[1] 1 10 15
[1] 1 10 15
[1] 10 11 12
v1 v3
[1,] 2 14
[2,] 3 15
Cunado usamos los selectores al lado izquierdo de la definición de objeto, podemos reemplazar los valores, por los que estamos definiendo.
# Podemos reemplazar valores de las matrices
# Reemplazar la segunda fila por 100, 200 y 300
m3[2,] <- c(100,200, 300)
m3
v1 v2 v3
[1,] 1 9 13
[2,] 100 200 300
[3,] 3 11 15
[4,] 4 12 16
v1 v2 v3
[1,] 1 9 13
[2,] 100 200 300
[3,] 3 1000 15
[4,] 4 1000 16
v1 v2 v3
[1,] 500 9 500
[2,] 100 200 300
[3,] 500 1000 500
[4,] 4 1000 16
v1 v2 v3
[1,] 500 9 503
[2,] 100 200 103
[3,] 500 1000 503
[4,] 4 1000 7
El array es un tipo matriz, pero con más de dos dimensiones 😵🤯. Las array, al igual que las matrices, solo pueden ser formadas por objetos del mismo tipo. Podemos usar la función array
y definir filas, columnas y tercera dimensión
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
, , 2
[,1] [,2] [,3] [,4]
[1,] 13 16 19 22
[2,] 14 17 20 23
[3,] 15 18 21 24
[1] "array"
[1] 3 4 2
int [1:3, 1:4, 1:2] 1 2 3 4 5 6 7 8 9 10 ...
Los data frames al igual que las matrices son objetos de dos dimensiones, pero pueden tener diferentes tipos de datos. Ésta característica los convierte en uno de los objetos más usados para muchos tipos de análisis, por su versatilidad. En general se puede entender las filas de un dataframe como observaciones, casos o individuos y las columnas como variables.
En los data frames cada columna puede ser de distinto tipo pero todas tienen que ser del mismo largo
Podemos usar la función view
para visualizar el dataframe
Podemos extraer diferentes características de los data frames
[1] 5 3
[1] "numeros" "letras" "logico"
[1] "data.frame"
Podemos transformar una matriz a un data frame o un data frame con solo números a una matriz.
En los data frames también podemos seleccionar valores por medio de []
, incluyendo los nombres de las columnas
[1] 1 2 3 4 5
numeros letras logico
1 1 Z TRUE
letras logico
1 Z TRUE
2 W FALSE
3 L FALSE
4 M TRUE
5 R FALSE
Otra manera muy común de seleccionar columnas en un data frame es por medio de $
. El operador de peso selecciona el objeto conservando su clase original, es decir el data frame
Las listas como los vectores son de una sola dimensión. Sin embargo, pueden tener diferentes tipos de valores e incluso de elementos. Una lista puede tener dentro un vector, una matriz, un data frame e incluso otra lista
v <- 1:10
df <- data.frame(num= 1:4, letra= letters[1:4])
lista <- list(vector=v, dataframe= df, Matriz= m3)
dim(lista)
NULL
[1] 3
Podemos utilizar los selectores que ya vimos en las listas
$vector
[1] 1 2 3 4 5 6 7 8 9 10
[1] 1 2 3 4 5 6 7 8 9 10
[1] "integer"
num letra
1 1 a
2 2 b
3 3 c
4 4 d
v1 v2 v3
[1,] 500 9 503
[2,] 100 200 103
[3,] 500 1000 503
[4,] 4 1000 7